This invention relates to the reading of stored digital information such as digitally encoded audio information and, more specifically, to a method and apparatus for detecting and reducing the number of errors introduced by reading recorded digital data.
In the process of digitally recording sound in an optical format on a recording medium such as motion picture film, audio signals are digitized and encoded into ones and zeros. These digital bits are recorded on the film, typically as clear and opaque regions, on the portion of the film reserved for audio data (i.e., the sound track area). Such a system is disclosed in U.S. Pat. No. 4,600,280 to Clark, incorporated herein by reference.
When the digital bit stream is read off of the film by a projector, errors are frequently made in determining whether an area representing a bit is clear or opaque. These errors may be due to scratches on the film, debris on the film, or a variety of other reasons. The frequency of occurence of such errors can be quite high, especially as the film wears. While new film typically has one error for each 10,000 bits read, film nearing the end of its useful life can have one error for each 100 bits read. By comparison, a typical digital compact disc has an error rate of only one in 100,000 bits read or better.
In order to detect errors and reduce the error rate, several error correction techniques have been developed. For such techniques to be effective, the exact location of an error must be determined.
For example, one prior art method for determining the occurence of an error, as well as its exact location, involved arranging the data bits into blocks. An example of such a block, containing seven rows and five columns, is shown below.
______________________________________ 0 0 1 1 0 1 1 1 1 0 1 0 0 1 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 1 1 0 0 0 0 ______________________________________
The error detection technique involves adding a sixth bit to each row, the bit being equal to the modulo 2 sum of the five bits in the row. Similarly, for each column, an eighth bit is appended to the bottom, which is also set equal to the modulo 2 sum of the seven bits in the column. Finally, an additional bit is appended to the lower right corner, this bit being equal to the modulo 2 sum of either the row of five error correction bits, or the column of seven error correction bits. (The sums of the column of error correction bits and the row of error correction bits are always identical). The block of data with the error correction bits appended is shown below.
______________________________________ 0 0 1 1 0 0 1 1 1 1 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1 1 ______________________________________
These thirteen error correction bits are recorded along with the data bits, and, after being read from the recording medium, are reassembled into the original block. The modulo 2 sums of each row and column are then calculated and are compared to the error correction bits read from the recording medium. If the read and calculated error correction bits match, then the data is assumed to be error free.
However, if there is an error, the error can be detected and corrected. The block of read data is shown below where an asterisk indicates a correctly read bit, and an X indicates an error.
______________________________________ * * * * * * * * .times. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ______________________________________
When the modulo 2 sums are calculated for the second row and the third column, the result will differ from the read error correction bits, as shown by the -.
______________________________________ * * * * * * * * .times. * * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * * * ______________________________________
With this information, it can be determined not only that an error exists, but the exact bit that is in error can be calculated. In other words, the bit located at the intersection of the row and column having differing read and calculated error correction bits can be inverted, thereby correcting the error.